package com.example.travel.mapper;

import com.example.travel.bean.HotelBean;
import com.example.travel.bean.ProductBean;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

@Mapper
public interface ProductMapper {
    List<ProductBean> getProductList();
    int addProduct(ProductBean product);
    int deleteProduct(int productID);
    int updateProduct(ProductBean product);

    ProductBean getProductById(int productID);
    
    List<ProductBean> getProductListWithPagination(String searchKeyword, int offset, int pageSize);
    int getProductCount(String searchKeyword);
    
    /**
     * 扣除美食余量（带锁机制，确保余量充足时才扣除）
     * @param productID 美食ID
     * @param num 需要扣除的数量
     * @return 影响的行数，1表示成功，0表示余量不足
     */
    int deductProductRemain(@Param("productID") int productID, @Param("num") int num);
    
    /**
     * 增加美食余量（用于回滚）
     * @param productID 美食ID
     * @param num 需要增加的数量
     * @return 影响的行数
     */
    int addProductRemain(@Param("productID") int productID, @Param("num") int num);
}
